function regrout(yalpha, yGPME, yPME, Xalpha, XGPME, XPME)

if nargin <= 4  % use common X if only one X given
    XGPME = Xalpha;
    XPME = Xalpha;
end
[b_alpha, se_alpha, ~, R2a_alpha, ~, ~, ~, F_alpha] = olsgmm(yalpha, Xalpha, 0, 1);
[b_GPME , se_GPME , ~, R2a_GPME , ~, ~, ~, F_GPME ] = olsgmm(yGPME , XGPME, 0, 1);
[b_PME  , se_PME  , ~, R2a_PME  , ~, ~, ~, F_PME  ] = olsgmm(yPME  , XPME, 0, 1);
t_alpha = b_alpha./se_alpha; p_alpha = 2*tcdf(-abs(t_alpha), size(Xalpha,1)-size(Xalpha,2));  
t_GPME  = b_GPME./se_GPME;   p_GPME  = 2*tcdf(-abs(t_GPME), size(XGPME,1)-size(XGPME,2));        
t_PME   = b_PME./se_PME;     p_PME   = 2*tcdf(-abs(t_PME), size(XPME,1)-size(XPME,2));        
s = ''; f = '%10.3f';
for k = 1:size(Xalpha,2)
    s = [s ' \t\t & ' num2str(b_alpha(k),f) ' \t & ' num2str(b_GPME(k),f) ' \t & ' num2str(b_PME(k),f) ' \n'];
    s = [s ' \t\t & (' num2str(se_alpha(k),f) ') \t & (' num2str(se_GPME(k),f) ') \t & (' num2str(se_PME(k),f) ') \n'];
    s = [s ' \t\t & [' num2str(p_alpha(k),f) '] \t & [' num2str(p_GPME(k),f) '] \t & [' num2str(p_PME(k),f) '] \n'];
end
s = [s 'N   \t & ' num2str(size(Xalpha,1)) ' \t\t & ' num2str(size(XGPME,1)) ' \t\t & ' num2str(size(XPME,1)) ' \n'];
s = [s 'R2a \t & ' num2str(R2a_alpha,f) ' \t & ' num2str(R2a_GPME,f) ' \t & ' num2str(R2a_PME,f) ' \n'];
s = [s 'F   \t & ' num2str(F_alpha(1),f) ' \t & ' num2str(F_GPME(1),f) ' \t & ' num2str(F_PME(1),f) ' \n'];
s = [s 'pF  \t & ' num2str(F_alpha(3),f) ' \t & ' num2str(F_GPME(3),f) ' \t & ' num2str(F_PME(3),f) ' \n'];   
sprintf(s)
